博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个web图片热点生成工具(winform开发) 附源码
阅读量:6577 次
发布时间:2019-06-24

本文共 5176 字,大约阅读时间需要 17 分钟。

给图片加热点是web开发中经常用到的一个功能。这方面的工具也不少。

为了更好的满足自己的需求,写了一个winform程序。

可以方便的给图片加热点,更方便灵活!

源码下载 http://download.csdn.net/download/qq_29939347/10150681

生成的代码:

1 2 3 4 5 6 7 

技术要点

 1 画图

 热点图形有 矩形,多边形,圆形等。为了统一处理,定义了接口:

1 interface IDrwaShap 2     { 3         void Draw(System.Drawing.Graphics g); 4         string GetLink(); 5         bool Hit(int x, int y); 6         bool IsChecked(); 7         void SetChecked(bool sel); 8         void SetEndPoint(System.Drawing.Point end); 9         void SetLink(string link);10 11         void AddPoint(int x,int y);12 13         void SetStartMovePoint(int x, int y);14         void SetCurMovePoint(int x, int y);15 16         int GetShapId();17 18         List
GetPoint();19 20 }

矩形实现类为HotShapRect,多边形为HotShapPoly。

1  class HotShapPoly : PicHot.IDrwaShap  2     {  3         static Pen _drawPen = new Pen(Color.Red, 2);  4         static Pen _checkedPen = new Pen(Color.Blue, 2);  5   6         public int _shapId = 0;  7         private bool _checked = false;  8         private bool _startMove = false;  9  10         private Point _moveStartPoint = new Point(0, 0); 11         string _linkText = string.Empty; 12  13         List
_listPoint = new List
(); 14 public HotShapPoly() 15 { 16 _shapId = AppNum.GetId(); 17 } 18 public int GetShapId() 19 { 20 return _shapId; 21 } 22 23 public List
GetPoint() 24 { 25 return _listPoint; 26 } 27 public void AddPoint(int x, int y) 28 { 29 Point newPt = new Point(x,y); 30 foreach (Point p in _listPoint) 31 { 32 if (p == newPt) 33 return; 34 } 35 36 _listPoint.Add(new Point(x, y)); 37 } 38 39 public void SetLink(string link) 40 { 41 _linkText = link; 42 } 43 public string GetLink() 44 { 45 return _linkText; 46 } 47 public void SetEndPoint(Point end) 48 { 49 AddPoint(end.X, end.Y); 50 } 51 52 public void SetChecked(bool sel) 53 { 54 _checked = sel; 55 _startMove = _checked; 56 } 57 58 public bool IsChecked() 59 { 60 return _checked; 61 } 62 63 public void SetStartMovePoint(int x, int y) 64 { 65 _moveStartPoint = new Point(x, y); 66 } 67 public void SetCurMovePoint(int x, int y) 68 { 69 if (!_startMove) 70 return; 71 72 Point moveEndPoint = new Point(x, y); 73 List
_listPointNew = new List
(); 74 foreach (Point p in _listPoint) 75 { 76 int m = p.X + (moveEndPoint.X - _moveStartPoint.X); 77 int n = p.Y + (moveEndPoint.Y - _moveStartPoint.Y); 78 _listPointNew.Add(new Point(m,n)); 79 } 80 _listPoint = _listPointNew; 81 82 _moveStartPoint = moveEndPoint; 83 } 84 85 86 public bool Hit(int x, int y) 87 { 88 if (_listPoint.Count <= 2) 89 return false; 90 91 Point hitPt = new Point(x,y); 92 93 GraphicsPath myGraphicsPath = new GraphicsPath(); 94 Region myRegion = new Region(); 95 myGraphicsPath.Reset(); 96 97 Point[] points = _listPoint.ToArray(); 98 myGraphicsPath.AddPolygon(points);//points); 99 myRegion.MakeEmpty();100 myRegion.Union(myGraphicsPath);101 //返回判断点是否在多边形里102 bool myPoint = myRegion.IsVisible(hitPt);103 104 return myPoint;105 }106 107 public void Draw(Graphics g)108 {109 if (_listPoint.Count <= 2)110 return ;111 112 Pen pen = _checked ? _checkedPen : _drawPen;113 114 g.DrawPolygon(pen, _listPoint.ToArray());115 }116 117 internal bool IsValidate()118 {119 if (_listPoint.Count <= 2)120 return false;121 return true;122 }123 124 }

2 生成代码

  

1  private void buttonCreateHtml_Click(object sender, EventArgs e) 2         { 3             StringBuilder sb = new StringBuilder(); 4  5             string mapName = string.Format("Map_{0}", DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")); 6             sb.AppendFormat("\r\n", fileName, mapName); 7             sb.AppendFormat("\r\n", mapName); 8             foreach (IDrwaShap shap in _shapGroup.Values) 9             {10                 sb.AppendFormat("\r\n",11                     LinkPointToStr(shap.GetPoint()), shap.GetLink());12             }13             sb.Append("");14             Clipboard.SetText(sb.ToString());15             textBoxHtml.Text = sb.ToString();16 17             MessageBox.Show(this, "代码已复制到剪贴板!");18         }

技术交流联系qq 13712486

转载于:https://www.cnblogs.com/yuanchenhui/p/web_hot_pic.html

你可能感兴趣的文章
你的回家路被照亮了,一份来自良心企业的厚礼
查看>>
日冲绳县议会通过修正案 拟增普天机场搬迁投票选项
查看>>
季节性流感致103人死亡 香港特区政府公布新应对措施
查看>>
十部门:支持绿色、智能家电销售 促进家电更新换代
查看>>
内蒙古37年间孕产妇、婴儿死亡率双下降 下降幅度均超90%
查看>>
广东2200条高速车道实现无感支付
查看>>
以公益为初心 青岛啤酒获中国红十字会最高荣誉
查看>>
广西山区小学期末发猪肉 被网友称为“最实在奖励”
查看>>
智慧物联背后,联想转型四大赛道悄然落地
查看>>
一个海归技术大牛眼中的阿里巴巴
查看>>
CSS 新的长度单位 `fr` 你知道么?
查看>>
华为敏捷/DevOps实践:别再用Excel管理项目
查看>>
【译】用JavaScript写一个区块链
查看>>
如何在直播应用中实现多人KTV?
查看>>
深度学习目标检测系列:一文弄懂YOLO算法|附Python源码
查看>>
记一次观察者模式的使用
查看>>
菜鸟学网路之 —— CDN
查看>>
从头开始了解PyTorch的简单实现
查看>>
通过Scope Hoisting优化Webpack输出
查看>>
BCH或能实现Visa级支付体验
查看>>